package com.ylx.web.p;


import com.ylx.pojo.Cart;
import com.ylx.pojo.CartItem;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Map;

@WebServlet("/deleteCartItemServlet")
public class DeleteCartItemServlet extends HttpServlet {

    /**
     * 根据商品的编号 去购物车中移除对应的商品
     * http://localhost:8080/my_shop/DeleteCartItemServlet?pid=24
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //获取商品编号
        String id = request.getParameter("id");
        //获取购物车信息session
        HttpSession session = request.getSession();
        //因为session中setAttribute是可以放任何类型的对象 因此就设计成统一对的Object类型的对象
        Cart cart = (Cart) session.getAttribute("cart");
        //获取购物车里面的商品明细
        Map<String, CartItem> cartItems = cart.getCartItems();
        //移除购物车里面的cartItem商品明细的对应的商品
        //因为这里map里面是用键值对的形式存放数据的  所以移除数据就根据数据的key键来移除
        //remove方法是用来移除元素的
        cartItems.remove(id);
        //更新一下session中的数据
        cart.setCartItems(cartItems);
        session.setAttribute("cart",cart);

        //判断购物车中是否有商品 cartItems购物车的商品项 如果说他的数量等于0 表示购物车中没有商品
        if (cartItems.size()==0){
            //如果购物车中没有商品 就要移除购物车对象 让页面显示成去购买商品那样
            session.removeAttribute("cart");
        }


        //去到购物车页面
        response.sendRedirect("front/cart.jsp");
    }
}

